package com.cjm.algorithm.leetcode;

/**
 * 这是 LeetCode 上的 643. 子数组最大平均数 I ，难度为 简单。
 * Tag : 「滑动窗口」
 * 给定 n 个整数，找出平均数最大且长度为 k 的连续子数组，并输出该最大平均数。
 * 示例：
 * 输入：[1,12,-5,-6,50,3], k = 4
 * 输出：12.75
 * 解释：最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
 * 提示：
 * • 1 <= k <= n <= 30,000。
 * • 所给数据范围 [-10,000，10,000]
 */
public class Ti643Easy {
    public static void main(String[] args) {

    }

    /**
     * 纯种的滑动窗口题
     *
     * @param nums
     * @param k
     * @return
     */
    public double findMaxAverage(int[] nums, int k) {
        int length = nums.length;
        if (length < k) {
            return 0;
        }
        double max = 0.0;
        double ans = 0.0;
        for (int i = 0; i < k; i++) {
            ans += nums[i];
        }
        max = ans;
        for (int i = k; i < nums.length; i++) {
            ans -= ans - nums[i - k];
            ans += nums[i];
            max = Math.max(max, ans);
        }
        return max / k;
    }
}
